package com.eureka.pay.util;//package com.snoob.baseclass.util;
//
//import com.ingstack.ingmall.config.WeChatConfig;
//import com.ingstack.ingmall.core.common.constant.CacheKey;
//import com.ingstack.ingmall.core.common.utils.StrUtil;
//import com.ingstack.ingmall.core.common.vo.Result;
//import com.ingstack.ingmall.util.WeChatUtil;
//import java.text.MessageFormat;
//import java.util.concurrent.TimeUnit;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
///**
// * 微信 调度器
// *
// * @author lixing
// * @date 2021/1/8 0008 下午 4:28:11
// */
//@Component
//public class WeChatScheduling {
//    @Autowired
//    private WeChatConfig weChatConfig;
//
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//    @Value("${variable.profiles}")
//    private String profiles;
//
//    /**
//     * @Description 定时刷新普通的AccessToken
//     * @Author lixing
//     * @Date 2021/5/18 14:36
//     */
//     @Scheduled(initialDelay = 1000, fixedRate = 1000 * 60 * 100)
//    // 任务启动1000毫秒后开始执行，每5000毫秒执行一次
//    // @Scheduled(initialDelay = 1000, fixedRate = 1000 * 10)
//    public void getAccessToken() {
//        log.info("");
//        log.info("根据appKey和secret获取accessToken start");
//        if (!"dev".equals(profiles) && !"test".equals(profiles)) {
//            log.info("profiles--"+profiles);
//            // 实时获取accessToken
//            Result<String> accessTokenResult = WeChatUtil.getAccessToken(weChatConfig.getAppId(), weChatConfig.getAppSecret());
//            if (accessTokenResult.isSuccess()) {
//                String accessTokenKey = CacheKey.WECHAT_DATA + MessageFormat.format("::{0}::access_token", weChatConfig.getAppId());
//                String accessTokenValue = accessTokenResult.getResult();
//                redisTemplate.opsForValue().set(accessTokenKey, accessTokenValue, 2, TimeUnit.HOURS);
//            } else {
//                log.info(MessageFormat.format("实时获取accessToken失败：{0}", accessTokenResult.getMessage()));
//            }
//        }
//        //
//        log.info("根据appKey和secret获取accessToken end");
//        log.info("");
//    }
//
//    /**
//     * jsapi_ticket是公众号用于调用微信JS接口的临时票据。
//     * 正常情况下，jsapi_ticket的有效期为7200秒，通过access_token来获取。
//     * 由于获取jsapi_ticket的api调用次数非常有限，频繁刷新jsapi_ticket会导致api调用受限，影响自身业务，开发者必须在自己的服务全局缓存jsapi_ticket
//     */
//      @Scheduled(initialDelay = 9000, fixedRate = 1000 * 7000)
//     // 任务启动5000毫秒后开始执行，每5000毫秒执行一次
//     // @Scheduled(initialDelay = 5000, fixedRate = 1000 * 15)
//    public void getJsapiTicket() {
//        log.info("");
//        log.info("根据accessToken获取管理员的jsapiTicket start");
//         if (!"dev".equals(profiles) && !"test".equals(profiles)) {
//             log.info("profiles--" + profiles);
//             // 从缓存中获取accesstoken
//             String accessTokenKey = CacheKey.WECHAT_DATA + MessageFormat.format("::{0}::access_token", weChatConfig.getAppId());
//             String accessTokenValue = redisTemplate.opsForValue().get(accessTokenKey);
//             if (StrUtil.isEffective(accessTokenValue)) {
//                 // 实时获取jsapiTicket
//                 Result<String> jsapiTicketKeyResult = WeChatUtil.getJsapiTicket(accessTokenValue);
//                 if (jsapiTicketKeyResult.isSuccess()) {
//                     String jsapiTicketKey = CacheKey.WECHAT_DATA + MessageFormat.format("::{0}::jsapi_ticket", weChatConfig.getAppId());
//                     String jsapiTicketValue = jsapiTicketKeyResult.getResult();
//                     redisTemplate.opsForValue().set(jsapiTicketKey, jsapiTicketValue, 7200, TimeUnit.SECONDS);
//                 } else {
//                     log.info(MessageFormat.format("实时获取jsapiTicket失败：{0}", jsapiTicketKeyResult.getMessage()));
//                 }
//             } else {
//                 log.info("从缓存中获取accesstoken为空");
//             }
//         }
//         //
//         log.info("根据accessToken获取管理员的jsapiTicket end");
//         log.info("");
//    }
//
//}
